<!-- -->
<template>
  <div class="public">
    <Header>
      <span>消息列表</span>
      <span slot="map"></span>
    </Header>
    <div class="con">
      <dl class="info" v-for="(item,idx) in list" :key="idx" @click="jumpChatPage(item.id)">
        <dt>
          <img :src="item.img" alt />
        </dt>
        <dd>
          <p>{{item.name}}</p>
          <span></span>
          <span></span>
        </dd>
      </dl>
    </div>
  </div>
</template>

<script>
import Header from "@/components/Header";
import { getChatInfo } from "@/api";
import { mapState } from "vuex";
export default {
  // import引入到组件需要注入到对象中才能使用
  components: { Header },
  data() {
    // 这里存放数据
    return {
      list: [],
      id: 0
    };
  },
  // 监听属性 类似于data概念
  computed: {
    ...mapState(["userId"])
  },
  // 监听data中的数据变化
  watch: {},
  // 方法集合
  methods: {
    getList() {
      getChatInfo({
        id: this.userId,
        identity: localStorage.getItem("identity")
      }).then(res => {
        console.log(res);
        this.id = res.data.id;
        this.list = res.data;
      });
    },
    jumpChatPage(id) {
      this.$router.push(`/chat/${id}`);
    }
  },
  //生命周期 - 创建完成 (可以访问当前this实例)
  created() {
    this.getList();
  },
  //生命周期 - 挂载完成 (可以访问DOM元素)
  mounted() {}
};
</script> 

<!-- Add "scoped" attribute to limit CSS to this component only -->
<!--使用了scoped属性之后，父组件的style样式将不会渗透到子组件中，-->
<!--然而子组件的根节点元素会同时被设置了scoped的父css样式和设置了scoped的子css样式影响，-->
<!--这么设计的目的是父组件可以对子组件根元素进行布局。-->
<style lang='scss'  scoped>
.con {
  flex: 1;
  overflow-y: auto;
}
.info {
  width: 100%;
  height: auto;
  padding: 10px;
  display: flex;
  border-bottom: 1px solid #ccc;
  dt {
    width: 50px;
    height: 50px;
    border-radius: 50%;
    border: 1px solid black;
    img {
      width: 100%;
      height: 100%;
      border-radius: 50%;
    }
  }
  dd {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    margin-left: 15px;
  }
}
</style>
